package cn.itcast.user.client;

import cn.itcast.user.config.FeignConfig;
import cn.itcast.user.fallback.UserClientFallBack;
import cn.itcast.user.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

// 声明目标服务名称
@FeignClient(value = "user-service",fallback = UserClientFallBack.class,configuration = FeignConfig.class)
public interface UserClient {

    // 目标地址
    @GetMapping("user/{id}")
    User queryById(@PathVariable("id") Long id);

    /**
     *
     * 本地注册表：Map<serviceId,List[ip:port,ip:port]>
     * @FeignClient("user-service")
     * 表示要请求地址为user-service
     * ribbon，底层，使得服务名称，变成ip:port,依靠本地注册表，
     * 地址拼接，http://ip:port/user/3,
     * 发起web请求，获取到json，再次序列化得到指定类型
     *
     *动态代理
     *
     */

}
